package com.demo.java.OD351_400.OD391;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【密码输入检测(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146243374
 */
public class OdMain {
    // 处理密码字符串，删除<及其之前的字符
    public static String processPassword(String inputStream) {
        StringBuilder stack = new StringBuilder();
        for (char ch : inputStream.toCharArray()) {
            if (ch == '<') {
                // 如果遇到<，删除栈中的最后一个字符
                if (stack.length() > 0) {
                    stack.deleteCharAt(stack.length() - 1);
                }
            } else {
                // 如果不是<，就将字符加入栈中
                stack.append(ch);
            }
        }
        // 返回处理后的字符串
        return stack.toString();
    }

    // 检查密码是否符合安全要求
    public static boolean checkPasswordRequirements(String password) {
        // 依次检查密码是否符合每个条件
        boolean lengthCheck = password.length() >= 8;
        boolean uppercaseCheck = false;
        boolean lowercaseCheck = false;
        boolean digitCheck = false;
        boolean specialCharCheck = false;

        // 遍历每个字符进行分类检查
        for (char ch : password.toCharArray()) {
            if (Character.isUpperCase(ch)) {
                uppercaseCheck = true;
            } else if (Character.isLowerCase(ch)) {
                lowercaseCheck = true;
            } else if (Character.isDigit(ch)) {
                digitCheck = true;
            } else if (!Character.isLetterOrDigit(ch) && !Character.isWhitespace(ch)) {
                specialCharCheck = true;
            }
        }

        // 返回所有条件是否都满足
        return lengthCheck && uppercaseCheck && lowercaseCheck && digitCheck && specialCharCheck;
    }

    public static void main(String[] args) {
        // 创建Scanner读取输入
        Scanner scanner = new Scanner(System.in);

        // 获取输入字符串并去除首尾空白
        String inputStream = scanner.nextLine().trim();

        // 处理输入的密码
        String password = processPassword(inputStream);

        // 检查密码是否符合安全要求
        boolean isValid = checkPasswordRequirements(password);

        // 输出处理后的密码及是否符合安全要求
        System.out.println(password + "," + isValid);
    }
}